package com.fowo.api.sys.component;

import lombok.Data;

import java.util.ArrayList;
import java.util.List;

/**
 * 系统数据活动 AOP 辅助方法
 * @author yl_ls
 */
public final class SysDataActivityAopHelper {
    private static final ThreadLocal<DataActivityAopContext> CONTEXT = new ThreadLocal<>();

    /**
     * 获取当前本地上下文
     * @return AOP上下文，可为空
     */
    public static DataActivityAopContext getContext() {
        return CONTEXT.get();
    }

    /**
     * 获取或新建当前本地上下文
     * @return AOP上下文，不会为空
     */
    public static DataActivityAopContext getOrCreateContext() {
        DataActivityAopContext dataActivityAopContext = CONTEXT.get();
        if (dataActivityAopContext == null) {
            dataActivityAopContext = new DataActivityAopContext();
            CONTEXT.set(dataActivityAopContext);
        }
        return dataActivityAopContext;
    }

    /**
     * 删除本地 AOP 上下文
     */
    public static void clear() {
        CONTEXT.remove();
    }

    @Data
    public static class DataActivityAopContext {
        /**
         * 操作影响的主键列表
         */
        private final List<Long> idList = new ArrayList<>();
    }
}
